パターン演算子、パターン照合

パターン演算子は、デレクトリからファイル名だけ取り出したり、ファイル名のサフィクスを取り除いたりするのに使用する。

変数の値の文字列の一部とパターンと照合するのに使用する。

パターンに使用できるものは、ワイルドカードなどを含む文字列も使うことができる。

パターン演算子 基本形

演算子

意味

${varname#pattern} varnameの値の最初の部分がpatternと一致した場合、最も短く一致する部分を削除し残りの部分を返す。
${varname##pattern} varnameの値の最初の部分がpatternと一致した場合、最も長く一致する部分を削除し残りの部分を返す。
${varname%pattern} varnameの値の終わりの部分がpatternと一致した場合、最も短く一致する部分を削除し残りの部分を返す。
${varname%%pattern} varnameの値の終わりの部分がpatternと一致した場合、最も長く一致する部分を削除し残りの部分を返す。
${varname/pattern/string}@

varnameの値でpatternと最も長く一致する部分を削除し残りの部分をstringと置換する。
@の書式では、最初に一致した部分だけが置換される。
Aの書式では、一致する部分はすべて置換される。
patternが#で始まる場合は、variableの始まりと一致しなくてはならない。
stringが、NULLの場合、一致した部分が削除される。
variableが@、*の場合位置パラメーターが順番に処理され、展開結果は、そのリストとなる。

${varname//pattern/string}A
${#variable} 文字列で変数の長さを返す。

 

変数path=/export/home/spaceforce/fruit.tar.gzを使った結果

例)

結果 理由
$(path##/*/) fruit.tar.gz /*/のパターンがづくため最後だけ残す。
$(path#/*/) home/mmstts/fruit.tar.gz /*/はじめて見つけた/export/だけ削除。

$path

/export/home/spaceforce/fruit.tar.gz 全体を表示している。
$(path%.*) /export/home/spaceforce/fruit.tar 終わりから最初に見つけた.*を削除。
$(path%%.*) /export/home/spaceforce/fruit ドットが続くのでその部分だけ削除。

このようにワイルドカードが力を発揮する。

パターン照合と置換

例)

環境変数 PTAHから個別パスをスライスする。

echo -e ${PATH//:/'\n'}

-eは、エスケープシーケンス有効にする。-eです。

パスの区切る記号:と\nを置換して表示する。

長さを返す演算子

例)

ringo="ringo"

echo ${#ringo}

5 <- 文字

Last edit was Friday, 06/14/2002 <back> <top>

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル